package com.xzm.MQ.helloworld;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.MessageProperties;
import org.junit.Test;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Provider {
    //生产消息
    @Test
    public void testSendMessage() throws IOException, TimeoutException {
        //创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("47.102.155.48");
        connectionFactory.setPort(5672);
        connectionFactory.setUsername("test");
        connectionFactory.setPassword("password");
        connectionFactory.setVirtualHost("/test");
        Connection connection = connectionFactory.newConnection();
        //创建通道
        Channel channel = connection.createChannel();
        //通道绑定消息队列，如果通道不存在，就创建
        //参数1：队列名称
        // 参数2: 是否持久化 若为true，即持久化，当关闭mq，队列会写入磁盘，下次启动队列存在。
        // 参数3:是否独占队列 若为true，说明当前队列只能被当前链接使用
        // 参数4:是否自动删除，是否在消息消费之后，删除队列，true为自动删除。
        // 参数5:其他属性
        channel.queueDeclare("hello",true,false,false,null);
        //发布消息
        //参数1：交换机名 参数2：路由键，当交换机名称为“”，就为队列名称
        //参数3：传递消息的额外参数 参数4：传递的消息
        channel.basicPublish("","hello",null,"hello rabbitmq".getBytes());
        channel.close();
        connection.close();
    }
}
